﻿using System;
using System.Linq;
using System.Windows.Forms;

namespace QuanLyKTX
{
    using Telerik.WinControls.UI;
    using QuanLyKTX.DAL;
    public partial class frm_EWRecords : Telerik.WinControls.UI.RadForm
    {

        #region Private Methods

        private tbl_SinhVien ThongTinSinhVien(string maSinhVien)
        {
            using (var db = new QuanLyKTXDataContext())
            {
                tbl_SinhVien query = (from sinhvien in db.tbl_SinhViens
                                      where sinhvien.MaSinhVien == maSinhVien
                                      select sinhvien).FirstOrDefault();
                return query;
            }
        }

        private void BindPhong()
        {
            using (var db = new QuanLyKTXDataContext())
            {
                var results = (from p in db.tbl_XepPhongs
                               select new
                               {
                                   p.SoPhong
                               }).Distinct();
                if (results.Count() > 0)
                {
                    radDropDownList_SoPhong.DataSource = results;
                    radDropDownList_SoPhong.ValueMember = "SoPhong";
                    radDropDownList_SoPhong.DisplayMember = "SoPhong";
                }
                else
                {
                    radDropDownList_SoPhong.DataSource = null;
                }
            }
        }

        private void InsChiSoPhong(string soPhong, int chiSoDien, int chiSoNuoc, byte kyThang, string nam, byte loai, DateTime ngayGhi, string ghiChu)
        {
            using (var db = new QuanLyKTXDataContext())
            {
                tbl_ChiSoDienNuoc chiSoDienNuoc = new tbl_ChiSoDienNuoc();
                chiSoDienNuoc.MaChiSo = Guid.NewGuid();
                chiSoDienNuoc.SoPhong = soPhong;
                chiSoDienNuoc.ChiSoDien = chiSoDien;
                chiSoDienNuoc.ChiSoNuoc = chiSoNuoc;
                chiSoDienNuoc.KyThang = kyThang;
                chiSoDienNuoc.Nam = nam;
                chiSoDienNuoc.Loai = loai;
                chiSoDienNuoc.NgayGhi = ngayGhi;
                chiSoDienNuoc.GhiChu = ghiChu;

                db.tbl_ChiSoDienNuocs.InsertOnSubmit(chiSoDienNuoc);
                db.SubmitChanges();
            }
        }

        private void BindRadGridViewChiSoPhong()
        {
            using (var db = new QuanLyKTXDataContext())
            {
                var results = from p in db.tbl_ChiSoDienNuocs
                              orderby p.NgayGhi descending
                              select new
                              {
                                  p.MaChiSo,
                                  p.SoPhong,
                                  p.ChiSoNuoc,
                                  p.ChiSoDien,
                                  p.NgayGhi,
                                  p.KyThang,
                                  p.Nam,
                                  p.GhiChu,
                                  Loai = LoaiChiSo(p.Loai)
                              };

                radGridView_SoLuu.DataSource = results;

            }

        }

        private string LoaiChiSo(byte loai)
        {
            switch (loai)
            {
                case 0:
                    return "Chỉ số bắt đầu.";
                case 1:
                    return "Chỉ số tháng.";
                case 2:
                    return "Chỉ số kết.";
                default:
                    return "Chỉ số bắt đầu.";
            }
        }

        private void ClearFormCapNhatChiSoPhong()
        {
            radMaskedEditBox_ChiSoDien.Value = null;
            radMaskedEditBox_ChiSoDien.Text = string.Empty;
            radMaskedEditBox_ChiSoNuoc.Value = null;
            radMaskedEditBox_ChiSoNuoc.Text = string.Empty;
            radTextBox_GhiChu.Clear();
            radDropDownList_SoPhong.Focus();
        }

        private void InitDefaultLoad()
        {
            //radDateTimePicker_NgayGhi.MaxDate = DateTime.Now;
            radDateTimePicker_NgayGhi.Value = DateTime.Now;

            for (int i=1; i <= 12; i++)
            {
                RadListDataItem dataItem = new RadListDataItem();
                dataItem.Value           = i;
                dataItem.Text            = i.ToString();
                radDropDownList_KyThang.Items.Add(dataItem);
            }
            radDropDownList_KyThang.Items[0].Selected = true;

            for (int i=0; i <= 2; i++)
            {
                RadListDataItem dataItem = new RadListDataItem();
                dataItem.Value = i;
                switch (i)
                {
                    case 0:
                        dataItem.Text = "Chỉ số bắt đầu";
                        break;
                    case 1:
                        dataItem.Text = "Chỉ số tháng";
                        break;
                    case 2:
                        dataItem.Text = "Chỉ số kết";
                        break;
                }
                radDropDownList_Loai.Items.Add(dataItem);
            }

            radDropDownList_Loai.Items[0].Selected = true;
            radMaskedEditBox_Nam.Value             = DateTime.Now.Year.ToString();
            radGridView_SoLuu.AutoGenerateColumns  = false;
            radGridView_SoLuu.AutoExpandGroups     = true;
            radMaskedEditBox_ChiSoDien.Value       = null;
            radMaskedEditBox_ChiSoDien.Text        = String.Empty;
            radMaskedEditBox_ChiSoNuoc.Value       = null;
            radMaskedEditBox_ChiSoNuoc.Text        = String.Empty;
        }

        #endregion

        #region Event Methods

        public frm_EWRecords()
        {
            InitializeComponent();
        }

        private void frm_EWRecords_Load(object sender, EventArgs e)
        {
            InitDefaultLoad();

            BindPhong();

            BindRadGridViewChiSoPhong();
        }

        private void radButton_Luu_Click(object sender, EventArgs e)
        {
            if (radMaskedEditBox_ChiSoDien.Value.ToString() != String.Empty && radMaskedEditBox_ChiSoNuoc.Value.ToString() != String.Empty)
            {
                if (radMaskedEditBox_Nam.Value.ToString() != String.Empty)
                {
                    DateTime ngayGhi = radDateTimePicker_NgayGhi.Value;
                    string soPhong = radDropDownList_SoPhong.SelectedValue.ToString();
                    Int32 chiSoDien = Convert.ToInt32(radMaskedEditBox_ChiSoDien.Value);
                    Int32 chiSoNuoc = Convert.ToInt32(radMaskedEditBox_ChiSoNuoc.Value);
                    Byte kyThang = Convert.ToByte(radDropDownList_KyThang.SelectedValue);
                    string nam = radMaskedEditBox_Nam.Value.ToString();
                    Byte loai = Convert.ToByte(radDropDownList_Loai.SelectedValue);
                    string ghiChu = radTextBox_GhiChu.Text;

                    InsChiSoPhong(soPhong, chiSoDien, chiSoNuoc, kyThang, nam, loai, ngayGhi, ghiChu);

                    ClearFormCapNhatChiSoPhong();
                    BindRadGridViewChiSoPhong();
                }
                else
                {
                    MessageBox.Show("Ô Năm không được để trống.");
                }
            }
            else
            {
                MessageBox.Show("Chưa nhập chỉ số Điện và chỉ số nước");
            }
        }

        #endregion

    }
}
